﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CatProxy.Common
{
    public class Pagination<T>
    {
        public List<T> Items { get; set; }
        public int Total { get; set; }
        public int TotalPages
        {
            get
            {
                if (PageSize == 0 || Total == 0)
                {
                    return 0;
                }
                return (int)Math.Ceiling(Total * 1.0 / PageSize);
            }
        }
        public int PageSize { get; set; }
        public int PageNo { get; set; }
    }
    //public static class PaginateExtension
    //{
    //    public static Pagination<T> Paginate<T>(this IOrderedQueryable<T> q, PageableActionContext query)
    //    {
    //        var result = new Pagination<T>();
    //        result.PageNo = Math.Max(1, query.PageNo);
    //        result.Total = q.Count();
    //        if (result.Total > 0)
    //        {
    //            result.PageSize = Math.Max(ApplicationSetting.DefaultPageSize, query.PageSize);
    //            var totalPage = (int)Math.Ceiling(result.Total * 1.0 / result.PageSize);
    //            result.PageNo = Math.Min(result.PageNo, totalPage);
    //            result.Items = q.Skip((result.PageNo - 1) * result.PageSize).Take(result.PageSize).ToList();
    //        }
    //        else
    //        {
    //            result.Items = Enumerable.Empty<T>().ToList();
    //        }
    //        return result;
    //    }
    //}
}
